/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package atualizacoes;

import java.awt.Color;
import java.awt.Component;
import java.awt.Container;
import java.text.DecimalFormat;
import java.text.ParseException;
import javax.swing.JComboBox;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.text.JTextComponent;

/**
 *
 * @author Douglas
 */
public class Funcoes {
    
    public static void getAtualizarQuery(javax.persistence.EntityManager entityManager,javax.persistence.Query query,java.util.List list){
        java.util.Collection data = query.getResultList();
        for (Object entity : data) {
            entityManager.refresh(entity);
        }
        list.clear();
        list.addAll(data);           
        
    }
    
    /**
     *
     * @param codigo
     * @param quant
     * @return
     * @throws ParseException
     */
    public static String getZeroEsq(int codigo,int quant) throws ParseException, java.text.ParseException{
      //Calcular zeros
      String formato = "";

        for (int i = 0; i < quant; i++) {
            formato += "0";
        }

      //Formatar codigo
      String codigoRetorno = null;
      DecimalFormat formatoCodigo = new DecimalFormat(formato);
      codigoRetorno = formatoCodigo.format(codigo);

      return codigoRetorno;


  }    
    
    /** funcao que informa se encontrou um componente com um nome especifico*/
    public static boolean findComponentByName(Object tela, String name) {
        Class<?> classe = tela.getClass();
        try {
            classe.getDeclaredField(name);
            return true;
        } catch (SecurityException e) {
        } catch (NoSuchFieldException e) {
        }
        return false;
    }    
      
/**
 *
 * @author Douglas
     * Nomear um a um todos os componentes.
     * Alterar a propriedade "Name" dos Labels para nomeCampoLabel
     * Alterar a propriedade "Name" dos Fields para nomeCampoField
     * Ambos devem ter o mesmo nome, como exceção do final Label ou Fiedl
 */    
public static boolean isFormValido(Container container){
    boolean retorno = false;
    for (Component component : container.getComponents()) {
        
        if (component instanceof JLabel) {

            Color c = new Color(0, 51, 255);
            if (((JLabel) component).getForeground().getBlue() == c.getBlue()) {

                String nomeRotulo = ((JLabel) component).getName(); 
                String rotulo = ((JLabel) component).getText();
                
                
                String[] partsCollArr;
                String delimiter = "Label";
                partsCollArr = nomeRotulo.split(delimiter);
                String campoBusca = partsCollArr[0].trim().concat("Field");
               
                Component campo = getComponentePorNome(container, campoBusca);

                String nomeComponente = campo.getName();  
                
                //Campos JTextFiedl
                if (campo instanceof JTextComponent) {
                    
                    String conteudo = ((JTextComponent) campo).getText();

                    if (conteudo.length() == 0) {
                        JOptionPane.showMessageDialog(null, "O preenchimento dos campos em destaque azul são obrigatorios (" + rotulo + ")", "Validação de formulário.", JOptionPane.INFORMATION_MESSAGE);
                        ((JTextComponent) campo).grabFocus();
                        retorno = false;
                        break;

                    } else {
                        retorno = true;
                    }

                }else
                //Campos JComboBox
                if (campo instanceof JComboBox) {
                    
                    int conteudo = ((JComboBox) campo).getSelectedIndex();

                    if (conteudo == -1) {
                        JOptionPane.showMessageDialog(null, "O preenchimento dos campos em destaque azul são obrigatorios (" + rotulo + ")", "Validação de formulário.", JOptionPane.INFORMATION_MESSAGE);
                        ((JComboBox) campo).grabFocus();
                        retorno = false;
                        break;

                    } else {
                        retorno = true;
                    }

                }                    
                




            }


        }
    }
    return retorno; 
       
    } 

public static Component getComponentePorNome(Container container, String nomeComponente){

        if(container.getComponents().length > 0)
        {
            for(Component c : container.getComponents())
            {
               
                String componente = c.getName();
                if(nomeComponente.equals( componente ))
                {
                    
                    c.setName(nomeComponente);
                    return c;
                }

            }
        }

        return null;

    }


    
}
